/*
 *  The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
 * P   A   H   N
 * A P L S I I G
 * Y   I   R
 * And then read line by line: "PAHNAPLSIIGYIR"
 * Write the code that will take a string and make this conversion given a number of rows:
 * string convert(string text, int nRows);
 * convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".
 */
#include <string>
using namespace std;

class Solution {
public:
    string convert(string s, int nRows) {
        if (nRows <= 1 || s.length() == 0) {
           return s;
        }
        string res;
        int len = s.length();
        for (int i = 0; i < len && i < nRows; i++) {
            int index = i;
            res += s[index];
            for (int j = 1; index < len; j++) {
                if (i == 0 || i == nRows - 1) {
                    index += 2 * nRows - 2;
                } else {
                    if (j & 0x1) {
                        index += 2 * (nRows - 1 - i);
                    } else {
                        index += 2 * i;
                    }
                }
                if (index < len) {
                    res += s[index];
                }
            }
        }
        return res;
    }
};

int main() {
    return 0;
}
